package com.sn.utils;

import com.sn.pojo.News;
import com.sn.pojo.NewsItem;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class NanYouUtils {
    //南邮大学的新闻爬取工具类
    private String uri = "http://www.njupt.edu.cn/53/list"+page+".htm";//http://www.njupt.edu.cn/53/list2.htm
    private String baseUri = "http://www.njupt.edu.cn";
    private static int page=1;
    private PoolingHttpClient httpClient = new PoolingHttpClient();

    public List<News> getNews() {
        //工具类只负责爬取内容,不负责插入数据库，即不会生成id
        String content = httpClient.doGetHtml(uri);
        page++;
        System.out.println("是否进行了分页?南邮"+page);
        System.out.println("uri 南邮"+uri);
        //直接使用jsoup解析content
        Document doc = Jsoup.parse(content);
        //筛选 target=_blank
        Elements a = doc.getElementsByAttributeValue("target", "_blank");
        Elements column_name = doc.getElementsByClass("Column_Name");
        List<News> newsList=new ArrayList<>();
        String category = column_name.text();//筛选得到新闻的分类
        for (Element element : a) {
            String title = element.text();
            String href = element.attr("href");
            if (!StringUtils.isBlank(title) &&
                    !href.startsWith("http") &&
                    !href.startsWith("/_redirect?") &&
                    !href.startsWith("mailto") &&
                    !StringUtils.isBlank(href)) {
                //二次筛选,经过分析,真正的新闻不是其他的链接,而是需要拼接学校官网再加上这里面的href值
//                System.out.println("标题: " + title + "链接:  " + href + "转到:" + baseUri + href);
                News news=new News();
                news.setNCategory(category);//插入新闻的类别
                news.setNTitle(title);//插入新闻的标题
                news.setNGetTime(Tools.getFormatDate(new Date()));//设置爬取时间
                news.setNHref(baseUri+href);//插入新闻的转到地址
                news.setSId(2);//插入新闻的学校id
                newsList.add(news);//加入列表
            }
        }

        return newsList;
    }

    public NewsItem getItem(String iUri){
        String content = httpClient.doGetHtml(iUri);
        //直接使用jsoup解析content
        NewsItem newsItem=new NewsItem();
        Document doc = Jsoup.parse(content);
        //筛选 class=Article_Source 获取文章的发布作者
        Elements article_source = doc.getElementsByClass("Article_Source");
        String author = article_source.text();
//        System.out.println("====作者"+author);
        newsItem.setNAuthor(author);//插入作者
        //筛选 class='Article_PublishDate' 获取发布时间
        Elements article_publishDate = doc.getElementsByClass("Article_PublishDate");
        String date = article_publishDate.text();
        newsItem.setNCreateTime(date);//插入发布时间
        //筛选 class=wp_articlecontent 获得文章内容
        Elements newsValue = doc.getElementsByClass("wp_articlecontent");
        //将这个元素列表中所有p标签的text获取下来就是新闻的内容了
        List<String> textList = newsValue.eachText();
        StringBuffer sb=new StringBuffer();
        for (String s : textList) {
            sb.append(s);
        }
        String news= sb.toString();

        newsItem.setNValue(news);
        return newsItem;
    }

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    public String getBaseUri() {
        return baseUri;
    }

    public void setBaseUri(String baseUri) {
        this.baseUri = baseUri;
    }
}
